package br.com.tabletcaixa.orcamento;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
import br.com.tabletcaixa.db.DBHelper;
import br.com.tabletcaixa.venda.VendaVO;

public class OrcamentoDAO {
	
	private SQLiteDatabase db;
	private DBHelper dbHelper;
	
	private String[] campos = {DBHelper.ORCAMENTO_ID, DBHelper.ORCAMENTO_NUMERO_ORCAMENTO,
			DBHelper.ORCAMENTO_CODIGO, DBHelper.ORCAMENTO_DESCRICAO, DBHelper.ORCAMENTO_PRECO,
			DBHelper.ORCAMENTO_PRECO_TOTAL, DBHelper.ORCAMENTO_QUANTIDADE,
			DBHelper.ORCAMENTO_QUANTIDADE, DBHelper.ORCAMENTO_CLIENTE, DBHelper.ORCAMENTO_VENDEDOR};
	
	public OrcamentoDAO(Context context){
		
		dbHelper = new DBHelper(context);
		
	}
	
	public void conectar(){
		
		db = dbHelper.getWritableDatabase();
		
	}
	
	public void desconectar(){
		
		dbHelper.close();
		
	}
	
	public long cadastrarOrcamento(OrcamentoVO orcamento){
		
		try{
			
			ContentValues values = new ContentValues();
			values.put(DBHelper.ORCAMENTO_ID, orcamento.getId());
			values.put(DBHelper.ORCAMENTO_NUMERO_ORCAMENTO, orcamento.getNumeroOrcamento());
			values.put(DBHelper.ORCAMENTO_CODIGO, orcamento.getCodigo());
			values.put(DBHelper.ORCAMENTO_DESCRICAO, orcamento.getDescricao());
			values.put(DBHelper.ORCAMENTO_PRECO, orcamento.getPreco());
			values.put(DBHelper.ORCAMENTO_PRECO_TOTAL, orcamento.getPrecoTotal());
			values.put(DBHelper.ORCAMENTO_QUANTIDADE, orcamento.getQuantidade());
			values.put(DBHelper.ORCAMENTO_CLIENTE, orcamento.getCliente());
			values.put(DBHelper.ORCAMENTO_VENDEDOR, orcamento.getVendedor());
			
			return db.insert(DBHelper.TBL_ORCAMENTO, null, values);
			
		}catch(Exception e){
			
			e.printStackTrace();
			e.getMessage();
			
		}
		
		return 0;
		
	}
	
	public long excluirOrcamento(OrcamentoVO orcamento){
		
		try{
			
			long id = orcamento.getId();
			
			return db.delete(DBHelper.TBL_ORCAMENTO, DBHelper.ORCAMENTO_ID + " = " + id, null);
			
		}catch(Exception e){
			
			e.printStackTrace();
			e.getMessage();
			
		}
		
		return 0;
		
	}
	
	public void excluirTodoOrcamento(){
		
		db.execSQL("DELETE FROM " + DBHelper.TBL_ORCAMENTO);
		
	}
	
	public List<OrcamentoVO> consultarOrcamento(){
		
		List<OrcamentoVO> lstOrcamento = new ArrayList<OrcamentoVO>();
		
		Cursor cursor = db.query(DBHelper.TBL_ORCAMENTO, campos, 
				null, null, null, null, null);
		
		cursor.moveToFirst();
		
		while(!cursor.isAfterLast()){
			
			OrcamentoVO lOrcamento = cursorToOrcamento(cursor);
			lstOrcamento.add(lOrcamento);
			cursor.moveToNext();
			
		}
		
		cursor.close();
		return lstOrcamento;
		
	}
	
	private OrcamentoVO cursorToOrcamento(Cursor cursor){
		
		OrcamentoVO orcamento = new OrcamentoVO();
		orcamento.setId(cursor.getLong(0));
		orcamento.setNumeroOrcamento(cursor.getString(1));
		orcamento.setCodigo(cursor.getString(2));
		orcamento.setDescricao(cursor.getString(3));
		orcamento.setPreco(cursor.getDouble(4));
		orcamento.setPrecoTotal(cursor.getDouble(5));
		orcamento.setQuantidade(cursor.getInt(6));
		orcamento.setCliente(cursor.getString(7));
		orcamento.setVendedor(cursor.getString(8));
		
		return orcamento;
		
	}
	
	public long buscarCodigoUltimaVenda(){
	       
		try {
            
        	Cursor cursor = db.query(DBHelper.TBL_ORCAMENTO, new String[]{"MAX(" + DBHelper.ORCAMENTO_ID + ") AS ID"}, 
        			null, null, null, null, null);
        	
			//Cursor cursor = db.rawQuery("SELECT MAX(_id) AS ID FROM venda", null);
			
            if(cursor.moveToLast()){
                
            	return cursor.getLong(0);
            
            }
            
        } catch (Exception e) {
           
        	e.printStackTrace();
        	
        }
        
        return 0;
    }

}
